package br.com.fiap.vendas.business.dao.impl;

import java.math.BigDecimal;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.fiap.vendas.business.dao.interfaces.ProdutoDAO;
import br.com.fiap.vendas.business.entity.ProdutoEntity;

@Local(ProdutoDAO.class)
@Stateless
public class ProdutoDAOImpl implements ProdutoDAO {

    @PersistenceContext(unitName = "vendaDS")
    private EntityManager em;

    @Override
    public void inserir(ProdutoEntity entity) {
        em.persist(entity);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<ProdutoEntity> buscarTodosProdutos() {
        Query query = em.createQuery(" select p from Produto p ");
        return query.getResultList();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<ProdutoEntity> buscarProdutos(BigDecimal valor,
                                              Integer quantidade) {

        Query query = em.createQuery(" select p from Produto p "
                + " where p.valor < :valor and p.quantidade >= :quantidade");

        query.setParameter("valor", valor);
        query.setParameter("quantidade", quantidade);

        return query.getResultList();

    }

    @Override
    public ProdutoEntity localizarProduto(Integer id) {
        return em.find(ProdutoEntity.class, id);
    }

}
